<?php if ( ! defined("BASEPATH")) exit("No direct script access allowed");

class contas_pagar extends CI_Controller {
		
	public function __construct(){
		parent::__construct();
		init_painel();
		esta_logado();
	}

	public function index(){
		$this->gerenciar();
	}
	
	public function cadastrar(){
		$this->form_validation->set_rules('descricao', 'DESCRIÇÃO', 'ucfirst');
		$this->form_validation->set_rules('valor', 'VALOR', 'required');
		$this->form_validation->set_rules('data_inicio', 'PRIMEIRA PARCELA', 'required');
		$this->form_validation->set_rules('tipos_despesas_id', 'TIPO DE DESPESA', 'required');
		if ($this->form_validation->run()==TRUE):
			$dados = elements(array('tipos_despesas_id', 'descricao'), $this->input->post(NULL, TRUE));
			$dados['valor'] = modificaDinheiroBanco($this->input->post('valor'));
			$dados['parcelamento_id'] = $this->input->post('parcelamento_id');
			$dados['created'] = date('Y-m-d H:i:s');
			$this->contas_pagar->do_insert($dados);
			//localizar ultimo id do contas a pagar
			$query_contas_pagar = $this->contas_pagar->get_ultimo()->row();
			$contas_pagar_id = $query_contas_pagar->id;
			//localizar id do parcelamento para descobrir a quantidade de parcelas a serem geradas
			$query_parcelamento = $this->parcelamento->get_byid($this->input->post('parcelamento_id', 'parcelamento_id'))->row();
			$valor_parcela = $dados['valor'] / $query_parcelamento->quant_parcela;
			$dados = NULL;
			$dia_alterado = NULL;
			for ($parcela=0; $parcela<$query_parcelamento->quant_parcela; $parcela++):
				if ($parcela == 0):
					$data_inicio = explode("/",$this->input->post('data_inicio'));
					$ano = $data_inicio[2];
					$mes = $data_inicio[1];
					$dia = $data_inicio[0];
				else:
					//gerar as datas corretas das parcelas
					$mes = $mes + 1;
					if ($mes > 12):
						$mes = 1;
						$ano = $ano + 1;
					endif;
				endif;
				$ultimo_dia_mes = cal_days_in_month(CAL_GREGORIAN, $mes, $ano);
				if ($ultimo_dia_mes < $dia):
					$dia_alterado = $ultimo_dia_mes;
				endif;
				$dados['n_parcela'] = $parcela + 1;
				$valor_parcela = number_format($valor_parcela, 2, '.', '');
				if (($query_parcelamento->quant_parcela - 1) != $parcela):
					//primeira até a penultima parcela
					$dados['valor'] = $valor_parcela;
				else:
					//ultima parcela
					$valor_total = modificaDinheiroBanco($this->input->post('valor'));
					$dados['valor'] =  $valor_total - ($valor_parcela * $parcela);
				endif;
				if ($dia_alterado == ''):
					$dados['vencimento'] = date($ano.'-'.$mes.'-'.$dia);
				else:
					$dados['vencimento'] = date($ano.'-'.$mes.'-'.$dia_alterado);
				endif;
				$dia_alterado=NULL;
				$dados['situacao'] = 'Pendente';
				$dados['contas_pagar_id'] = $contas_pagar_id;
				$dados['created'] = date('Y-m-d H:i:s');
				$this->contas_pagar_parcela->do_insert($dados);
			endfor;
		    set_msg('msgok', 'Cadastro efetuado com sucesso.', 'sucesso');
			redirect(current_url());
		endif;
		$data = array(
			'tela' 	=> 'cadastrar',
			'tipos_despesas' => $this->tipos_despesas->get_all()->result(),
			'formas_pagamento' => $this->forma_pagamento->get_all()->result(),
			'parcelamentos' => $this->parcelamento->get_all()->result()
		);
		set_tema('headerinc', load_css(array('datepicker/foundation-datepicker.min')));
		set_tema('footerinc', load_js(array('maskmoney/jquery.maskMoney.min', 'maskmoney/maskmoney-script.min', 'maskedinput/maskedinput-script.min', 'maskedinput/jquery.maskedinput.min', 'datepicker/foundation-datepicker.min', 'datepicker/datepicker-script.min', 'app.min')));
		set_tema('titulo', 'Cadastro de Contas a Pagar');
		set_tema('conteudo', load_modulo('painel', 'contas_pagar', $data));
		load_template();
	}

	public function gerenciar(){
		$data = array(
			'tela' => 'gerenciar',
			'query' => $this->contas_pagar->get_all()->result()
		);
		set_tema('headerinc', load_css(array('datatables/dataTables.foundation.min')));
		set_tema('footerinc', load_js(array('datatables/jquery.dataTables.min', 'datatables/dataTables.foundation.min', 'app.min')));
		set_tema('titulo', 'Listagem de Contas a Pagar');
		set_tema('conteudo', load_modulo('painel', 'contas_pagar', $data));
		load_template();
	}

	public function editar(){
		if ($this->input->post('id_contas_pagar') == ''):
			//nao faz nada
		else:
			//localizar as parcelas
			$cont = 0;
			$total_parcelas = 0;
			$query_contas_pagar_parcela = $this->contas_pagar_parcela->get_byid($this->input->post('id_contas_pagar'), 'contas_pagar_id')->result();
			foreach ($query_contas_pagar_parcela as $linha_contas_pagar_parcela):
				$cont++;
				$this->form_validation->set_rules('vencimento'.$linha_contas_pagar_parcela->n_parcela, 'PARCELA '.$cont, 'required');
				$this->form_validation->set_rules('valor'.$linha_contas_pagar_parcela->n_parcela, 'PARCELA '.$cont, 'required');
				$total_parcelas = $total_parcelas + modificaDinheiroBanco($this->input->post('valor'.$linha_contas_pagar_parcela->n_parcela));
			endforeach;
			if ($total_parcelas != $this->input->post('total')):
				$this->form_validation->set_rules('valor_errado', 'SOMATÓRIA DE PARCELAS É DIFERENTE DO VALOR TOTAL DO CONTAS A PAGAR', 'required');
			endif;
			if ($this->form_validation->run()==TRUE):
				//efetuar as alterações - tabela parcela
				$query_contas_pagar_parcela = $this->contas_pagar_parcela->get_byid($this->input->post('id_contas_pagar'), 'contas_pagar_id')->result();
				foreach ($query_contas_pagar_parcela as $linha_contas_pagar_parcela):
					$vencimento = explode("/",$this->input->post('vencimento'.$linha_contas_pagar_parcela->n_parcela));
					$vencimento = $vencimento[2].'-'.$vencimento[1].'-'.$vencimento[0];
					$dados['vencimento'] = $vencimento;
					$dados['valor'] = modificaDinheiroBanco($this->input->post('valor'.$linha_contas_pagar_parcela->n_parcela));
					$this->contas_pagar_parcela->do_update($dados, array('contas_pagar_id'=>$this->input->post('id_contas_pagar', TRUE), 'n_parcela'=> $linha_contas_pagar_parcela->n_parcela));
				endforeach;
			endif;
		endif;
		$contas_pagar = $this->uri->segment(4);
		if ($contas_pagar == NULL):
			set_msg('msgerro', 'Escolha uma despesa para alterar.', 'erro');
			redirect('painel/contas_pagar_parcela/gerenciar');
		endif;
		$data = array(
			'tela'	=> 'editar',
			'query'	=> $this->contas_pagar->get_byid($contas_pagar)->row()
		);
		
		set_tema('headerinc', load_css(array('datepicker/foundation-datepicker.min')));
		set_tema('footerinc', load_js(array('maskmoney/jquery.maskMoney.min', 'maskmoney/maskmoney-script.min', 'maskedinput/maskedinput-script.min', 'maskedinput/jquery.maskedinput.min', 'maskedinput/maskedinput-script', 'datepicker/foundation-datepicker.min', 'datepicker/datepicker-script.min', 'app.min')));
		set_tema('titulo', 'Alteração de contas_pagar');
		set_tema('conteudo', load_modulo('painel', 'contas_pagar', $data));
		load_template();
	}

	public function excluir(){
		if (is_admin(TRUE)):
			$contas_pagar = $this->uri->segment(4);
			if ($contas_pagar != NULL):
				$query = $this->contas_pagar->get_byid($contas_pagar);
				if ($query->num_rows()==1):
					$query = $query->row();
					//localizar e verificar se não há parcela quitada
					$query_contas_pagar_parcela = $this->contas_pagar_parcela->get_byid($contas_pagar, 'contas_pagar_id')->result();
					$parcela_quitada = 0;
					foreach($query_contas_pagar_parcela as $linha_contas_pagar_parcela):
						if ($linha_contas_pagar_parcela->situacao == 'Quitada'):
							$parcela_quitada = 1;
						endif;
					endforeach;
					if ($parcela_quitada == 0):
						$dados['canceled'] = date('Y-m-d H:i:s');
						$this->contas_pagar->do_update($dados, array('id'=>$contas_pagar));
						$dados = NULL;
						//Localizar parcelas para inserir a situação Cancelado
						$query_contas_pagar_parcela = $this->contas_pagar_parcela->get_byid($contas_pagar, 'contas_pagar_id')->result();
						foreach($query_contas_pagar_parcela as $linha_contas_pagar_parcela):
							//inserir a situação cancelado
							$dados['situacao'] = 'Cancelado';
							$this->contas_pagar_parcela->do_update($dados, array('contas_pagar_id'=>$linha_contas_pagar_parcela->contas_pagar_id, 'n_parcela'=>$linha_contas_pagar_parcela->n_parcela));
						endforeach;
					else:
						set_msg('msgerro', 'Há parcelas Quitadas. Favor estornar as parcelas para excluir.', 'erro');
					endif;
				endif;
			else:
				set_msg('msgerro', 'Escolha uma despesa para excluir', 'erro');
			endif;
		endif;
		redirect('painel/contas_pagar/gerenciar');
	}
	
}

/* End of file contas_pagar.php */
/* Location: ./application/controllers/contas_pagar.php */